#!/usr/bin/python3
import psutil
import datetime
import yagmail


def send_mail(contents):
    """ 发送邮件 """
    # 链接邮箱服务器
    yag = yagmail.SMTP(user="xxxxx@163.com", password="xxxxx", host="smtp.163.com")
    # 给单个接受者发送邮件
    yag.send('xxxx@qq.com', '[系统监控报告]', contents)


def linux_monitor(time):
    # 获取硬件信息
    # 1、获取cpu使⽤率
    cpu_info = psutil.cpu_percent(interval=time)
    # 2、内存使⽤率
    memory_info = psutil.virtual_memory().percent
    # 3、磁盘使⽤率
    disk_info = psutil.disk_usage("/").percent
    # 4、获取⽹络收发数量
    net_info = psutil.net_io_counters()
    # 5、获取当前系统时间
    log_time = datetime.datetime.now().strftime("%Y-%m-%d %T")
    # 6、记录⽇志信息
    log_str = "|-------------------|------------|-------------|-------------|----------------------------|\n"
    log_str += "| 监控时间 | CPU使⽤率 | 内存使⽤率 | 硬盘使⽤率 | ⽹络收发量 |\n"
    log_str += "| | (共%d核CPU) | (总计%dG内存) | (总计%dG硬盘)| |\n"
    log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
    log_str += "|%s| %s%% | %s%% | %s%% | 收:%d/发:%d |\n" % (
        log_time, cpu_info, memory_info, disk_info, net_info.bytes_sent, net_info.bytes_recv)
    log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
    print(log_str)
    # 保存到⽇志⽂件中
    with open("log.txt", "a") as file:
        # 写⽂件
        file.write(log_str + "\n\n")
        return log_str


def main():
    # 开始循环
    while True:
        # 每隔1秒获取⼀次状态
        contents = linux_monitor(10)
        # 发送邮件
        send_mail(contents)


if __name__ == '__main__':
    main()
